Шаг 581 - CMenu::GetMenuState.

Автор Каев А. Г.
UINT GetMenuState( UINT nID, UINT nFlags ) const;

Возвращаемое значение
Значение 0xFFFFFFFF если определенный элемент не существует. Если nId идентифицирует всплывающее меню , старший байт содержит число элементов в меню, байт младшего разряда содержит флажки меню, связанные с меню. Иначе возвращаемое значение маска (булево OR (или)) значений из следующего списка (эта маска описывает состояние пункта меню, который nId идентифицирует):

MF_CHECKED 		Действует  как переключатель с MF_UNCHECKED, чтобы поместить заданную по умолчанию 
			галочку рядом с элементом. Когда прикладная программа обеспечивает точечные рисунки
			 галочки (см. SetMenuItemBitmaps функцию), " галочка включена "на точечный рисунок отображается.
MF_DISABLED 		Отключает пункт меню так, чтобы он не мог быть выбран, но не потускнел.
MF_ENABLED 		Расрешает пункту меню так, чтобы он могл быть выбран и восстановлен  из недоступного состояния. 
			Обратите внимание, что значение этой константы - 0, прикладная программа не должна проверить 
			против 0 для сбоя при использовании этого значения.
MF_GRAYED 		Отключает пункт меню так, чтобы он не могл быть выбран и потускнел.
MF_MENUBARBREAK 		Помещает элемент в новую строку в статических меню или в новом столбце в всплывающем меню. 
			Новый столбец в всплывающем меню будет отделяться от старого столбца вертикальной разделительной 
			линией.
MF_MENUBREAK 		Помещает элемент в новую строку в статических меню или в новом столбце в всплывающем 
			меню. Никакая разделительная линия не помещена между столбцами.
MF_SEPARATOR 		Выводит горизонтальную разделительную линию. Может  использоваться только в  всплывающем меню.
			Эта строка не может быть недоступна, заблокирован, или высвечена. Другие параметры игнорируются.
MF_UNCHECKED 		Действия как переключатель с MF_CHECKED, чтобы удалить галочку рядом с элементом. 
			Когда прикладная программа обеспечивает точечные рисунки галочки (см. SetMenuItemBitmaps 
			функцию членства), " галочка выключена " на  точечный рисунок отображается. 
			Обратите внимание, что значение этой константы - 0, прикладная программа не должна проверить против 0 
			для сбоя при использовании этого значения.

Параметры
nID
Определяет пункт меню ID, как определено nFlags.
nFlags
Определяет характер nID. Это может быть одно из следующих значений:

MF_BYCOMMAND 	Определяет, что параметр дает команду ID существующего пункта меню. Это - значение по умолчанию.
MF_BYPOSITION 	Определяет, что параметр дает позицию существующего пункта меню. Первый элемент - в позиции 0.

Замечания
Возвращает состояние определенного пункта меню или числа элементов в всплывающем.

Пример

// CMainFrame:: OnToggleTestMenuItem () - драйвер команды меню для 
// "TEST" пунктa меню (чей идентификатор ресурса является ID_HELP_TEST). Это переключатели 
// выбран или не выбран состояние пункта меню "Test".
// CMainFrame - класс унаследованный от CMainFrame.

void CMainFrame::OnToggleTestMenuItem() 
{
   // Получите всплывающее меню, которое содержит пункт меню "Test".
   CMenu* mmenu = GetMenu();
   CMenu* submenu = mmenu->GetSubMenu(3);

   // Проверить состояние пункта меню "Test". Включите пункт меню
   // если он в настоящее время отключен. Иначе отключите выбор  пункта меню
   // если он в настоящее время включен.

   UINT state = submenu->GetMenuState(ID_HELP_TEST, MF_BYCOMMAND);
   ASSERT(state != 0xFFFFFFFF);

   if (state & MF_CHECKED)
      submenu->CheckMenuItem(ID_HELP_TEST, MF_UNCHECKED | MF_BYCOMMAND);
   else
      submenu->CheckMenuItem(ID_HELP_TEST, MF_CHECKED | MF_BYCOMMAND);
}

Hosted by uCoz